package com.bjc.sdx.activity;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.PagerTabStrip;
import androidx.viewpager.widget.PagerTitleStrip;
import androidx.viewpager.widget.ViewPager;
import android.graphics.Color;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.bjc.sdx.R;

public class ViewPagerActivity2 extends AppCompatActivity {
    private static final String TAG = "ViewPageActivity2";
    private View view1, view2, view3;//需要滑动的页卡
    private ViewPager viewPager;//viewpager
    private PagerTitleStrip pagerTitleStrip;//viewpager的标题
    private PagerTabStrip pagerTabStrip;//一个viewpager的指示器，效果就是一个横的粗的下划线
    private List<View> viewList;//把需要滑动的页卡添加到这个list中
    private List<String> titleList;//viewpager的标题
    private Button button;//button对象，一会用来进入第二个Viewpager的示例
    private Intent intent;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpager_main2);
        initView();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 在退出Activity时记得移除监听器
        viewPager.removeOnPageChangeListener(mOnPageChangeListener);
    }

    private void initView() {
        viewPager = (ViewPager) findViewById(R.id.viewpager);
        viewPager.addOnPageChangeListener(mOnPageChangeListener);
        // 设置当前显示的是第几个
        viewPager.setCurrentItem(1);

        pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagertab);
        pagerTabStrip.setTabIndicatorColor(Color.YELLOW);
        pagerTabStrip.setDrawFullUnderline(false);
        pagerTabStrip.setBackgroundColor(Color.RED);
        pagerTabStrip.setTextSpacing(50);

        LayoutInflater lf = getLayoutInflater().from(this);
        view1 = lf.inflate(R.layout.viewpager_layout1, null);
        view2 = lf.inflate(R.layout.viewpager_layout2, null);
        view3 = lf.inflate(R.layout.viewpager_layout3, null);

        viewList = new ArrayList<View>();// 将要分页显示的View装入数组中
        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);

        View view4 = lf.inflate(R.layout.viewpager_layout1, null);
        view4.setBackgroundColor(Color.GREEN);
        View view5 = lf.inflate(R.layout.viewpager_layout2, null);
        view5.setBackgroundColor(Color.BLUE);
        View view6 = lf.inflate(R.layout.viewpager_layout3, null);
        view6.setBackgroundColor(Color.LTGRAY);
        viewList.add(view4);
        viewList.add(view5);
        viewList.add(view6);

        titleList = new ArrayList<String>();// 每个页面的Title数据
        titleList.add("position0");
        titleList.add("position1");
        titleList.add("position2");

        titleList.add("position3");
        titleList.add("position4");
        titleList.add("position5");

        PagerAdapter pagerAdapter = new PagerAdapter() {

            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == arg1;
            }

            @Override
            public int getCount() {
                return viewList.size();
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView(viewList.get(position));
                Log.w(TAG, "destroyItem position=" + position);
            }

            @Override
            public int getItemPosition(Object object) {
                return super.getItemPosition(object);
            }

            @Override
            public CharSequence getPageTitle(int position) {
                //直接用适配器来完成标题的显示，所以从上面可以看到，我们没有使用PagerTitleStrip。当然你可以使用
                return titleList.get(position);
            }

            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                Log.w(TAG, "instantiateItem position=" + position);
                container.addView(viewList.get(position));
                return viewList.get(position);
            }

        };
        viewPager.setAdapter(pagerAdapter);
    }

    /**
     * 通过这个监听来viewpager的滑动事件
     */
    ViewPager.OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() {

        /**
         * 当页面在滑动的时候会调用此方法，在滑动被停止之前，此方法回一直得到
         *
         * 调用。其中三个参数的含义分别为：
         *
         * position :当前页面，及你点击滑动的页面
         * positionOffset:当前页面偏移的百分比
         * positionOffset:当前页面偏移的像素位置
         * @param position
         * @param positionOffset
         * @param positionOffsetPixels
         */
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            Log.w(TAG, "onPageScrolled position=" + position);
        }

        /**
         * 此方法是页面跳转完后得到调用，position是你当前选中的页面的Position（位置编号）
         * @param position
         */
        @Override
        public void onPageSelected(int position) {
            Log.w(TAG, "onPageSelected position=" + position);
        }

        /**
         *onPageScrollStateChanged(int state)   ，此方法是在状态改变的时候调用，其中state这个参数
         *
         * 有三种状态（0，1，2）。state ==1的时辰默示正在滑动，state==2的时辰默示滑动完毕了，state==0的时辰默示什么都没做。
         *
         * 当页面开始滑动的时候，三种状态的变化顺序为（1，2，0）
         *
         * @param state
         *  ViewPager#SCROLL_STATE_IDLE  默认状态
         *  ViewPager#SCROLL_STATE_DRAGGING  正在滑动
         *  ViewPager#SCROLL_STATE_SETTLING   滑动结束
         */
        @Override
        public void onPageScrollStateChanged(int state) {
            Log.w(TAG, "onPageScrollStateChanged state=" + state);
        }
    };
}